package com.highcom.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.highcom.entity.PageResult;
import com.highcom.mapper.CheckItemDao;
import com.highcom.model.CheckItem;
import com.highcom.service.CheckItemService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * @version 1.0
 * @Author YangJiaQuan_hrbnu
 * @Date 2024/7/30 14:15
 */

@Service
public class CheckItemServiceImpl implements CheckItemService {
    @Resource
    private CheckItemDao checkItemDao;

    @Override
    public void add(CheckItem checkItem) {
        checkItemDao.add(checkItem);
    }

    @Override   //  分页查询 借助 PageHelper
    public PageResult pageQuery(Integer currentPage, Integer pageSize, String queryString) {
        PageHelper.startPage(currentPage,pageSize);
        Page<CheckItem> page = checkItemDao.selectByCondition(queryString);
        return new PageResult(page.getTotal(),page.getResult());    // 返回 分页的总数和分页的结果集
    }

    @Override   // 删除逻辑：如果要删除的检查项已经和检查组关联，则不给删除
    public void delete(Integer id) {
        //  第一步：查询当前要删除的检查项是否有关联检查组
        long count = checkItemDao.findCountByCheckItemId(id);
        //  第二部：判断是否大于0，大于则不让删除
        if(count>0){
            throw new RuntimeException("当前检查项被检查组关联，无法删除！");
        }
        checkItemDao.deleteById(id);
    }

    @Override
    public CheckItem findById(Integer id) {
        return checkItemDao.findById(id);
    }

    @Override
    public void edit(CheckItem checkItem) {
        checkItemDao.edit(checkItem);
    }

    @Override
    public List<CheckItem> findAll() {
        return checkItemDao.findAll();
    }
}
